package chen.web.util.ubb;

import java.util.List;

public interface UbbTag extends InstanceCreateable<UbbTag>{
	
	public static final int NameMaxLength = 5;
	
	/**
	 * 获取标签名称
	 * @return
	 */
	String getName();
	/**
	 * 获取标签属性
	 * @return
	 */
	String getProperty();
	/**
	 * 设置标签名称
	 */
	void setProperty(String property);
	/**
	 * 转换成html,包括子标签
	 * @return
	 */
	String toHtml();
	/**
	 * 关闭标签
	 */
	void close();
	/**
	 * 在标签内增加子节点
	 * @param tag
	 */
	void addInnerNode(Object tag);
	/**
	 * 获取所以子节点
	 * @return
	 */
	List<Object> getInnerNodes();
	/**
	 * 判断标签是否关闭
	 * @return
	 */
	boolean isClosed();
	/**
	 * @return
	 */
	/**
	 * 获取上层标签
	 * @return
	 */
	UbbTag getParentNode();
	/**
	 * 返回ubb字符串,若参数escape为true会转义无用的ubb标签
	 * 转义无用的ubb标签的目的是防止无用的标签未来会变为有用的标签
	 * 比如：当前环境下[html]标签无用，未来可能会启用但不希望过去的标签生效，就应该转义ubb标签,反之不转义
	 * @param 是否转义无用的ubb标签
	 * @return
	 */
	String toUbb(boolean escape);
}
